首行数据如何快速转变量名?
本文作者:俞诗琪
文字编辑:张馨月
导读
在日常工作中,我们导入的数据常常不那么规范,如下图所示,原本的变量名处在变量值的位置,若要重新提取变量名,单个变量依次重命名显然繁琐,那么我们有什么快捷的方法呢?
在之前的推文《小命令大用途之——labone和nrow》中,我们使用命令nrow解决了这一问题,今天我们学习的命令convert_top_lines可以实现类似的功能。使用这一命令,不仅可以通过一行代码解决上述问题,而且可读入存于变量值中的变量标签。下面我们就一起来了解convert_top_lines命令吧!
一、基本语法
首先,convert_top_lines是个外部命令,需要通过“ssc install convert_top_lines”进行安装。使用该命令可以将数据集中的第一、第二行观察值分别转化为变量名、变量标签。值得注意的是,这里的数据集需符合以下两个条件:
(1)数据集中所有变量均为字符型变量;
(2)数据集原始变量名必须为“v1、v2、v3…”的形式。
该命令的基本语法如下:
命令可单独使用,表示仅将第一行观察值作为变量名,且该行观察值在转化后的数据集中仍保留。convert_top_lines命令后添加的选项,有以下含义:
(1)line2labels:在提取第一行观察值为变量名的同时,第二行观察值作为对应的变量标签;
(2)drop:提取后删除第一行观察值,若与选项line2labels联用,则删除前两行观察值;
(3)list:列出前三行观察值,若与选项drop联用,则列出删除观察值前的数据。
有点抽象是不是?别担心,下面通过一个小例子马上就学会啦!
二、用法示例
1、auto数据集的例子
xlsx或csv格式的数据导入Stata过程中,经常会将原始变量名作为首行数据输入。因此,为方便大家理解,我们这里利用auto数据集,导出一个xlsx形式的数据:
clear all
cd "D:\" //定位到自己的路径
sysuse auto
export excel using auto1.xlsx, replace firstrow(variables)
现在,我们导出名为“auto1”的新文件,格式为xlsx,内容包含auto数据集的变量名和所有观察值,如下图所示:
然后,我们将“auto1”文件重新导入Stata,此时变量名作为第一行观察值保留在数据集中:
import excel using auto1.xlsx, clear
大家一定跃跃欲试,要拿出convert_top_lines命令来“一显神通”。但不要忘了,使用该命令有两个重要条件——数据为字符型、变量名以“v1、v2…”命名。显然,这里的数据集满足条件一,但变量名为“A、B、C…”的形式。因此,我们要用到renvarlab命令批量修改变量名,详见往期推文《renvarlab:链接变量名与标签名的纽带》。程序和截图如下:
renvarlab A-L\v1-v12
现在直接使用convert_top_lines命令,实现目标变量名如下:
convert_top_lines
import excel using auto1.xlsx, clear //数据集变化,需要重新导入、命名
renvarlab A-L\v1-v12
convert_top_lines,drop
这样就得到我们想要的数据集。对于原数据集的第二行观察值,若要用作变量标签,则增加选项line2labels:
import excel using auto1.xlsx, clear
renvarlab A-L\v1-v12
convert_top_lines, line2labels
describe
可见数据集第二行观察值,被用作变量标签(此处仅举例,该行观察值并非原始数据变量标签)。当然我们也可通过list选项观察数据集前三行数据情况:
import excel using auto1.xlsx, clear
renvarlab A-L\v1-v12
convert_top_lines, line2labels drop list //增加drop选项不影响list输出内容
可以发现,增加了drop选项后,仍输出数据集删除观察值前的前三项数据。这个选项方便我们检查数据集中,变量名和变量标签是否一一对应,或位置是否正确。
2、注意事项
还有一个问题需要注意,convert_top_lines命令修改变量名时,会默认所有变量名小写,原本存在的大写格式都会被取代:
import excel using auto1.xlsx, clear
replace A = upper(A) in 1 //将变量A第一行的取值大写
renvarlab A-L\v1-v12
convert_top_lines
显而易见,这边变量名“MAKE”转换后变为“make”,因此大家在使用这个命令时,多多注意大小写的问题,毕竟,小细节也决定工作的成败哦!
关于我们
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。